Senior Android Software Engineer

Product Development Belgrade, Serbia


Description

SnapOne is a leading manufacturer and distributor of audio, video, surveillance, power, and wiring equipment for residential and commercial A/V integrators.  We believe that life’s better when everything works together. And the same can be said about the collaborative work we do. Join our award-winning team in our continuous quest to deliver the most brilliant, personalized smart home experiences to people around the world. 
 
The Senior Android Software Engineer will report to the Software Development Manager of Smart Device Software and will evaluate and select technology and architecture that is appropriate for the desired customer experience, establish patterns, procedures and practices that enable the highest quality standards as well as will be responsible for developing mobile applications appropriate for desired customers and utilized by thousands of home automation systems. This position will help develop the Home Control Customer Interface for Android mobile apps and embedded devices (i.e., touch panels) utilizing programming languages Java and Kotlin.  
This role will work cross functionally, and the incumbent should be a motivated self-starter with good testing and DevOps practices.  A successful individual should follow the best industry practices to demonstrate intellectual curiosity, accountability, and a passion for software development, home automation and mobile development. 
 
Specific Responsibilities
  • Ensure parity between Android and iOS apps by working with the iOS developers
  • Use Test Driven Development to speed feature delivery and reduce the bug count while increasing test code coverage as well as perceived customer quality
  • A good understanding of the Android SDK, Activity and Fragment lifecycles, thread management, custom views, and animations
  • Experience with Android app architecture patterns (MVVM, MVP, etc.) and design principles
  • Experience integrating with backend systems, web services, and third-party software
  • Proven understanding and experience using reactive frameworks such as RxJava or Kotlin Coroutines
  • You build high-quality code by always writing tests and using performance and static analysis evaluation tools
  • Experience with test automation, dependency injection, and continuous integration
  • Familiarity with Scrum and Agile methodologies
  • Excellent communicator who collaborates well across teams, while also being able to work fully independently when needed
  • Implement graphical designs within the application with pixel perfect accuracy 
Required Qualifications
  • 5+ years of software engineering experience and a bachelor’s degree in computer science, software engineering or a relevant field of study 
  • 3+ years of extensive experience developing Android mobile native applications in Kotlin/Java 
  • Solid understanding of the full Android mobile development life cycle
  • Strong knowledge of Android UI design principles and best practices
  • Advanced knowledge of UI layouts and creating adaptive layouts for various hardware configurations
  •  Experience writing custom views and controls
  •  Experience in testing Android applications: unit test, integration test, UI test, performance test
  •  Excellent English language communicator who collaborates well across teams, while also being able to work fully independently when needed
Preferred Qualifications
  •  Experience in a dependency injection framework 
  •  Experience mentoring junior members 
  •  Working knowledge of Internationalization 
  •  Advanced Gradle experience 
  •  Experience with reactive programing in Java or Kotlin